
; This file defines general (de)spawning parameters and behaviours for ground vehicles.
;
; For the TECHNICAL DETAILS AND LIMITATIONS of the features in here, see the "APPENDIX.txt" file.
; The UNEDITED VALUES in this file resemble the game's vanilla (i.e. unmodified) values.
;
; To define COP-CAR SPAWN TABLES, see the "CarTables.ini" file.
; To define HELICOPTER (DE)SPAWNING BEHAVIOUR, see the "Helicopter.ini" file.






; ── ■ │ SPAWN TRACKING │ ■ ───────────────────────────────────────────────────────────────────────

[Board:Tracking]
; Which non-"Chasers" are also tracked by the engagement count shown above the pursuit board.
;
; ■ FORMAT: heavyVehicles  = areTracked
;           leaderVehicles = areTracked
;           joinedVehicles = areTracked
;
; • This applies to Heavy / LeaderStrategy vehicles, and vehicles that join from roadblocks.
; • Tracked non-"Chasers" cause the engagement count to increment / decrement as they (de)spawn.
; • This is purely cosmetic and doesn't affect backup triggers or any other pursuit mechanics.
; • Tracking HeavyStrategy vehicles can warn you of their arrival if you watch the count.
; • Each value must be either "true" or "false".
; • You can't define a "default" value.

heavyVehicles  = true
leaderVehicles = true
joinedVehicles = true






; ── ■ │ "CHASERS" (DE)SPAWNING │ ■ ───────────────────────────────────────────────────────────────

[Chasers:Limits]
; How many "Chasers" can (re)spawn regardless of engagement count, and the global cop-spawn limit.
;
; ■ FORMAT: heatXY = minSpawnCount, globalCopSpawnLimit (FREE-ROAM; -> "default" if omitted)
;           raceXY = minSpawnCount, globalCopSpawnLimit (RACES;     -> "heatXY"  if omitted)
;
; • The global cop-spawn limit defines the cop threshold above which no more "Chasers" can spawn.
; • The game compares the global cop-spawn limit against the total number of cops in the world.
; • The global cop-spawn limit takes precedence over all other "Chasers"-related spawn limits.
; • The global cop-spawn limit also applies to vehicles joining pursuits from roadblocks.
; • For global cop-spawn limits > 8, you may also need a car-loader replacement mod.
; • See the "README.txt" file for an overview of available car-loader replacements.
; • Each value must be a non-negative whole number.
; • You can define a "default" value pair.

default = 1, 8

heat01 = 1, 8
heat02 = 2, 10
heat03 = 3, 12
heat04 = 4, 15
heat05 = 5, 20
heat06 = 6, 25
heat07 = 8, 30
heat08 = 10, 35
heat09 = 12, 40
heat10 = 15, 40

race01 = 1, 8
race02 = 2, 10
race03 = 3, 12
race04 = 4, 15
race05 = 5, 20
race06 = 6, 25
race07 = 8, 30
race08 = 10, 35
race09 = 12, 40
race10 = 15, 40




[Chasers:Independence]
; Whether "Chasers" spawns are independent of non-"Chasers" and cops of other pursuits.
;
; ■ FORMAT: heatXY = areIndependent (FREE-ROAM; -> "default" if omitted)
;           raceXY = areIndependent (RACES;     -> "heatXY"  if omitted)
;
; • If independent, the global cop-spawn limit disregards all vehicles that joined from roadblocks.
; • If independent, the global cop-spawn limit no longer applies to joining from roadblocks, too.
; • If independent, the global cop-spawn limit disregards all roadblock and Strategy vehicles.
; • If independent, the global cop-spawn limit disregards all vehicles of other pursuits.
; • For independent "Chasers" spawns, you may also need a car-loader replacement mod.
; • See the "README.txt" file for an overview of available car-loader replacements.
; • Each value must be either "true" or "false".
; • You can define a "default" value.

default = false

heat01 = false
heat02 = false
heat03 = true
heat04 = true
heat05 = true
heat06 = true
heat07 = true
heat08 = true
heat09 = true
heat10 = true

race01 = false
race02 = false
race03 = true
race04 = true
race05 = true
race06 = true
race07 = true
race08 = true
race09 = true
race10 = true




[Chasers:Decrement]
; Whether only "Chasers" that have been destroyed can decrement the engagement count.
;
; ■ FORMAT: heatXY = onlyIfDestroyed (FREE-ROAM; -> "default" if omitted)
;           raceXY = onlyIfDestroyed (RACES;     -> "heatXY"  if omitted)
;
; • Each value must be either "true" or "false".
; • You can define a "default" value.

default = false

heat01 = false
heat02 = false
heat03 = false
heat04 = true
heat05 = true
heat06 = true
heat07 = true
heat08 = true
heat09 = true
heat10 = true

race01 = false
race02 = false
race03 = false
race04 = true
race05 = true
race06 = true
race07 = true
race08 = true
race09 = true
race10 = true




[Chasers:Backup]
; Whether Heat transitions immediately trigger backup to update the engagement count.
;
; ■ FORMAT: heatXY = triggerBackup (FREE-ROAM; -> "default" if omitted)
;           raceXY = triggerBackup (RACES;     -> "heatXY"  if omitted)
;
; • Backup sets the engagement count to the current Heat level's maximum value.
; • Each value must be either "true" or "false".
; • You can define a "default" value.

default = true

heat01 = true
heat02 = true
heat03 = true
heat04 = true
heat05 = true
heat06 = true
heat07 = true
heat08 = true
heat09 = true
heat10 = true

race01 = true
race02 = true
race03 = true
race04 = true
race05 = true
race06 = true
race07 = true
race08 = true
race09 = true
race10 = true




[Chasers:Clearance]
; How far away (in metres) new "Chasers" must spawn from all already active cops.
;
; ■ FORMAT: heatXY = minSpawnClearance (FREE-ROAM; -> "default" if omitted)
;           raceXY = minSpawnClearance (RACES;     -> "heatXY"  if omitted)
;
; • "Chasers" spawns can fail if the required clearance is large and there are many active cops.
; • Lower values make "Chasers" spawns at Heat levels with 20+ cops much more consistent.
; • Lower values may lead to stacked spawns and heavily congested roads.
; • Each value must be a non-negative decimal or whole number.
; • You can define a "default" value.

default = 40.0

heat01 = 40.0
heat02 = 40.0
heat03 = 35.0
heat04 = 30.0
heat05 = 25.0
heat06 = 25.0
heat07 = 20.0
heat08 = 20.0
heat09 = 15.0
heat10 = 15.0

race01 = 40.0
race02 = 40.0
race03 = 35.0
race04 = 30.0
race05 = 25.0
race06 = 25.0
race07 = 20.0
race08 = 20.0
race09 = 15.0
race10 = 15.0




[Chasers:Fleeing]
; Delay interval (in seconds) and count threshold for "Chasers" of other Heat levels to flee.
;
; ■ FORMAT: heatXY = {min, max}FleeDelay, chasersThreshold (FREE-ROAM)
;           raceXY = {min, max}FleeDelay, chasersThreshold (RACES)
;
; • "Chasers" flee only at Heat levels for which you define valid delay and threshold values.
; • "Chasers" flee only while the number of active "Chasers" is above the threshold.
; • "Chasers" flee only if they aren't in the current Heat level's "Chasers" table.
; • Flee delays are random numbers between "minFleeDelay" and "maxFleeDelay".
; • Each delay value must be a non-negative decimal or whole number.
; • Each threshold value must be a non-negative whole number.
; • You can't define a "default" value tuple.

heat01 = 2.0, 5.0, 2
heat02 = 2.0, 5.0, 2
heat03 = 2.0, 5.0, 2
heat04 = 2.0, 5.0, 2
heat05 = 2.0, 5.0, 2
heat06 = 2.0, 5.0, 2
heat07 = 2.0, 5.0, 2
heat08 = 2.0, 5.0, 2
heat09 = 2.0, 5.0, 2
heat10 = 2.0, 5.0, 2

race01 = 2.0, 5.0, 2
race02 = 2.0, 5.0, 2
race03 = 2.0, 5.0, 2
race04 = 2.0, 5.0, 2
race05 = 2.0, 5.0, 2
race06 = 2.0, 5.0, 2
race07 = 2.0, 5.0, 2
race08 = 2.0, 5.0, 2
race09 = 2.0, 5.0, 2
race10 = 2.0, 5.0, 2






; ── ■ │ TRAFFIC SPAWNING │ ■ ─────────────────────────────────────────────────────────────────────

[Traffic:Independence]
; Whether spawning decisions for traffic cars are independent of those for "Chasers" / roadblocks.
;
; ■ FORMAT: heatXY = ignore{Chasers, Roadblocks} (FREE-ROAM; -> "default" if omitted)
;           raceXY = ignore{Chasers, Roadblocks} (RACES;     -> "heatXY"  if omitted)
;
; • In the vanilla game, traffic doesn't spawn whenever there are any pending "Chasers" spawns.
; • In the vanilla game, traffic doesn't spawn whenever there's an active roadblock request.
; • Fully independent traffic spawns fix the vanilla issue of disappearing traffic in pursuits.
; • Roadblock-independent traffic might cause some roadblock vehicles to spawn misaligned.
; • Regardless of independence, the game's hard-coded traffic limitations still apply.
; • For independent traffic spawns, you may also need a car-loader replacement mod.
; • See the "README.txt" file for an overview of available car-loader replacements.
; • Each value must be either "true" or "false".
; • You can define a "default" value pair.

default = false, false

heat01 = false, false
heat02 = false, false
heat03 = false, false
heat04 = false, false
heat05 = true, true
heat06 = true, true
heat07 = true, true
heat08 = true, true
heat09 = true, true
heat10 = true, true

race01 = false, false
race02 = false, false
race03 = false, false
race04 = false, false
race05 = true, true
race06 = true, true
race07 = true, true
race08 = true, true
race09 = true, true
race10 = true, true